package com.hsgene.medicine.persistence;

import com.hsgene.medicine.condition.GeneticMedicineCondition;
import com.hsgene.medicine.domain.GeneticCancerMedicine;
import com.hsgene.medicine.domain.GeneticMedicine;
import com.hsgene.medicine.dto.DaCancerDto;
import com.hsgene.medicine.dto.GeneticCancerMedicineDto;
import com.hsgene.medicine.dto.GeneticMedicineDto;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @desc: 药物管理持久层
 * @author: 江承良
 * @date: 2018/8/15 9:23
 */
public interface MedicineRepository {

    /***
     * 查询添加的药物是否重名
     * @author jcl
     * @date 2019/1/17 10:48
     * @param drugName
     * @return
     */
    int geneticMedicineRepeat(@Param("drugName") String drugName);

    /**
     * 添加基因检测药物
     *
     * @param geneticMedicine 基因检测药物信息
     * @return
     */
    int insertGeneticMedicine(@Param("geneticMedicine") GeneticMedicine geneticMedicine);

    /**
     * 基因加测药物数量查询
     *
     * @param geneticMedicineCondition 查询条件
     * @return 数量
     */
    int geneticMedicineCount(@Param("geneticMedicineCondition") GeneticMedicineCondition geneticMedicineCondition);

    /**
     * 基因检测药物列表查询
     *
     * @param geneticMedicineCondition
     * @return
     */
    List<GeneticMedicineDto> geneticMedicineDtos(@Param("geneticMedicineCondition") GeneticMedicineCondition geneticMedicineCondition);

    /**
     * 根据id获取基因检测药物信息
     *
     * @param id 基因检测药物id
     * @return 基因检测药物信息
     */
    GeneticMedicineDto geneticMedicineById(@Param("id") String id);

    /**
     * 修改基因检测药物
     *
     * @param geneticMedicine 基因检测药物信息
     * @return
     */
    int updateGeneticMedicine(@Param("geneticMedicine") GeneticMedicine geneticMedicine);

    /**
     * 删除基因检测药物信息
     *
     * @param id 基因检测药物id
     * @return
     */
    int deleteGeneticMedicine(@Param("id") String id);

    /**
     * 获取所有的基因检测药物
     *
     * @return
     */
    List<GeneticMedicineDto> getGeneticMedicineDtos();

    /**
     * 添加癌症药物信息
     *
     * @param geneticCancerMedicine
     * @return
     */
    int insertGeneticCancerMedicine(@Param("geneticCancerMedicine") GeneticCancerMedicine geneticCancerMedicine);

    /**
     * 根据cancerId查询癌症药物数据
     *
     * @param cancerId cancerId
     * @return
     */
    GeneticCancerMedicine getCancerMedicineByCancerId(@Param("cancerId") String cancerId);

    /**
     * 更新癌症药物信息
     *
     * @param geneticCancerMedicine 数据信息
     * @return
     */
    int updateGeneticCancerMedicine(@Param("geneticCancerMedicine") GeneticCancerMedicine geneticCancerMedicine);

    /**
     * 根据条件查询癌症药物数量
     *
     * @param geneticMedicineCondition 查询条件
     * @return 数量信息
     */
    int geneticCancerMedicineCount(@Param("geneticMedicineCondition") GeneticMedicineCondition geneticMedicineCondition);

    /**
     * 查询癌症药物列表
     *
     * @param geneticMedicineCondition 查询条件
     * @return 癌症药物列表
     */
    List<GeneticCancerMedicineDto> geneticCancerMedicineDtos(@Param("geneticMedicineCondition") GeneticMedicineCondition geneticMedicineCondition);

    /**
     * 批量查询药物名称
     *
     * @param ids
     * @return 药物名称
     */
    List<String> geneticNameByIds(String[] ids);

    /**
     * 根据id获取信息
     *
     * @param id id
     * @return 数据信息
     */
    GeneticCancerMedicineDto cancerMedicineById(@Param("id") String id);

    /**
     * 删除癌症药物
     *
     * @param id
     * @return
     */
    int deleteCancerMedicine(@Param("id") String id);

    /**
     * 获取癌症名称
     *
     * @param cancerId 癌症id
     * @return
     */
    String getCancerName(@Param("cancerId") String cancerId);

    /**
     * 获取疾病信息
     *
     * @return
     */
    List<DaCancerDto> cancerInfoByParentId(@Param("parentId") String parentId);

    /**
     * 获取全部疾病
     * @return
     */
    List<GeneticCancerMedicineDto> cancerMedicineAll();

    /**
     * 基因检测药物列表（花生仁）
     * @return
     */
    List<GeneticMedicineDto> peanutDrugs();

    /***
     * 根据id获取疾病
     * @author jcl
     * @date 2018/10/26 14:19
     * @param cancerId 疾病id
     * @return
     */
    DaCancerDto cancerById(@Param("cancerId") String cancerId);
}
